////////////////////////////////////////////////////////////////////////////////
// Filename: blur.hs
////////////////////////////////////////////////////////////////////////////////

struct HullInputType
{
	float4 pos          : POSITION;         //posizione
    float2 tex			: TEXCOORD;			//Coordinate texture
};

struct ConstantOutputType
{
    float edges[3] : SV_TessFactor;
    float inside : SV_InsideTessFactor;
};

struct HullOutputType
{
	float4 pos          : POSITION;         //posizione
    float2 tex			: TEXCOORD;			//Coordinate texture
};


////////////////////////////////////////////////////////////////////////////////
// Patch Constant Function
////////////////////////////////////////////////////////////////////////////////
ConstantOutputType BaseConstantFunction(InputPatch<HullInputType, 3> inputPatch, uint patchId : SV_PrimitiveID)
{    
    ConstantOutputType output;
	
    output.edges[0] = 1;
    output.edges[1] = 1;
    output.edges[2] = 1;
    output.inside = 1;

    return output;
}


////////////////////////////////////////////////////////////////////////////////
// Hull Shader
////////////////////////////////////////////////////////////////////////////////
[domain("tri")]
[partitioning("integer")]
[outputtopology("triangle_cw")]
[outputcontrolpoints(3)]
[patchconstantfunc("BaseConstantFunction")]
HullOutputType BaseHullShader(InputPatch<HullInputType, 3> patch, uint pointId : SV_OutputControlPointID, uint patchId : SV_PrimitiveID)
{
    HullOutputType output;

    output.pos		= patch[pointId].pos;
    output.tex		= patch[pointId].tex;
	
    return output;
}
